package com.turing.post.selfwebservice.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;

/**
 * 自助服务网站注册用户数据访问接口
 * 
 * @author 李治
 * 
 */
@Remote
@Local
public interface CardHolderUserDao {
	/**
	 * 根据注册用户主键查询注册用户信息
	 * 
	 * @param cardHolderUserId
	 *            注册用户Id
	 * @return 注册用户信息
	 */
	public CardHolderUser getCardHolderUserByCardHolderUserId(
			BigInteger cardHolderUserId);

	/**
	 * 根据注册用户登录名查询注册用户信息
	 * 
	 * @param logonName
	 *            注册用户登录名
	 * @return
	 */
	public CardHolderUser getCardHolderUserByLogonName(String logonName);

	/**
	 * 分页查询所有注册用户
	 * 
	 * @param page
	 *            页数
	 * @return 注册用户列表
	 */
	public List<CardHolderUser> getCardHolderUsers(Integer page);

	/**
	 * 查询所有注册用户总数
	 * 
	 * @return 所有注册用户总数
	 */
	public Integer getCardHolderUsersCount();

	/**
	 * 条件分页查询所有注册用户
	 * 
	 * @param email
	 *            邮箱
	 * @param name
	 *            姓名
	 * @param idTypeId
	 *            证件类型
	 * @param idNo
	 *            证件号
	 * @param sex
	 *            性别
	 * @param status
	 *            状态
	 * @param page
	 *            页数
	 * @return 注册用户列表
	 */

	public List<CardHolderUser> getCardHolderUsersByCondition(String email,
			String name, Integer idTypeId, String idNo, String sex,
			String status, Integer page);

	/**
	 * 条件分页查询所有注册用户总数
	 * 
	 * @param email
	 *            邮箱
	 * @param name
	 *            姓名
	 * @param idTypeId
	 *            证件类型
	 * @param idNo
	 *            证件号
	 * @param sex
	 *            性别
	 * @param status
	 *            状态
	 * @return 注册用户总数
	 */
	public Integer getCardHolderUsersCountByCondition(String email,
			String name, Integer idTypeId, String idNo, String sex,
			String status);

	/**
	 * 添加注册用户
	 * 
	 * @param cardHolderUser
	 *            注册用户
	 * @throws PCPSApplicationException
	 */
	public void insertCardHolderUser(CardHolderUser cardHolderUser)
			throws PCPSApplicationException;

	/**
	 * 修改注册用户
	 * 
	 * @param cardHolderUser
	 *            注册用户
	 * @throws PCPSApplicationException
	 */
	public void updateCardHolderUser(CardHolderUser cardHolderUser)
			throws PCPSApplicationException;

	/**
	 * 删除注册用户
	 * 
	 * @param cardHolderUserId
	 *            注册用户ID
	 * @throws PCPSApplicationException
	 */
	public void deleteCardHolderUser(BigInteger cardHolderUserId)
			throws PCPSApplicationException;

	/**
	 * 获取主键最大值
	 * 
	 * @return 主键最大值
	 */
	public BigInteger getMaxCardHolderUserId();

	/**
	 * 根据持卡用户登录名获取持卡用户密码问题
	 * 
	 * @param logonName
	 * @return
	 */
	public CardHolderUser getCardHolderUserQuestionByLogonName(String logonName);

	/**
	 * 检测电子邮箱是否已被注册
	 * 
	 * @param email
	 * @return true 已被注册 false 未被注册
	 */
	public boolean checkEmailAlreadyRegister(String email);
}
